#include <iostream>
using namespace std;

void myPrint(int a){
        cout<<"a = "<<a<<endl;
}

void myPrint(char *p){
        cout<<"p = "<<p<<endl;
}

void myPrint(int a, int b){
        cout<<"a = "<<a<< " b = "<<b<<endl;
}

/*返回值 不是 判断函数重载的标准
int myPrint(int a, int b){//c++编译器报错 已经有了一个
        return a+b; 
}
*/

//1 当函数名和不同的参数搭配时函数的含义不同
//2 函数重载判断标准
        //名称相同 参数不一样(个数和类型) 
        //返回值 不是 判断函数重载的标准 //重点
//3 重载函数调用标准
int main01(int argc, char const *argv[]){
        myPrint(1);
        myPrint("aa");
        myPrint(1, 2);
        return 0;
}

//函数重载 和 函数默认参数在一起
void myfunc(int a, int b, int c = 0){//编译通过了
        cout<<"a = "<<a<<" b = "<<b<<" c = "<<c<<endl; 
}
void myfunc(int a, int b){//编译通过了
        cout<<"a = "<<a<<" b = "<<b<<endl;
}
void myfunc(int a){
        cout<<"a = "<<a<<endl;       
}
int main(int argc, char const *argv[]){
        //myfunc(1,2);//c++编译不通过 函数调用时,会产生二义性
        myfunc(1);
        return 0;
}
